Concurrent Mark Sweep GC
並行マークスイープ
三色マーキング(三色抽象化(tricolour abstraction)とおなじか?)
マーキング中に新しいオブジェクトが作られることへの対策
マークされたオブジェクト(黒), マークスタック(灰),残りのオブジェクト(白)
手順
1. ルートオブジェクトのすべてをマークスタックに配置
2. マークされると黒にする
3. ↑これで辿られた子オブジェクトはマークスタックに入る(白から灰になる)
4. マークスタックがなくなると終わり
GC中にオブジェクトが追加されると、黒の中にそれを参照しているオブジェクトがあれば、その黒はいったん灰に戻る。
その後、上の手順を繰り返せば、新たに追加されたオブジェクトも3番目の手順でちゃんと黒になれる
http://cco.hatenablog.jp/entry/2014/12/01/162240
https://tech.nikkeibp.co.jp/it/article/COLUMN/20060626/241719/
http://www.nminoru.jp/~nminoru/java/cms/concurrent_mark_sweep.html
使ってる言語
Rubinius, JVM
#GC